Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Commit (data management)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Commit_(data_management)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Commit_data_management rootpage-Commit_data_management skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Commit (data management)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">For the revision control concept, see <a href="Commit_(revision_control)" class="mw-redirect" title="Commit (revision control)">Commit (revision control)</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */


.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}


/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above summary">Commit (data management)</th></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Programmer" title="Programmer">Developer(s)</a></th><td class="infobox-data">Computer science researchers (e.g., Jim Gray, IBM R* team)</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Operating_system" title="Operating system">Operating system</a></th><td class="infobox-data">Cross-platform</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Computing_platform" title="Computing platform">Platform</a></th><td class="infobox-data">Database systems, distributed systems, blockchain networks</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_categories#Categorization_approaches" title="Software categories">Type</a></th><td class="infobox-data">Transaction protocol / Data consistency mechanism</td></tr></tbody></table>
<p>In <a href="Computer_science" title="Computer science">computer science</a> and <a href="Data_management" title="Data management">data management</a>, a <b>commit</b> is a behavior that marks the end of a transaction and provides <a href="Atomicity_(database_systems)" title="Atomicity (database systems)">Atomicity</a>, <a href="Consistency_(database_systems)" title="Consistency (database systems)">Consistency</a>, <a href="Isolation_(database_systems)" title="Isolation (database systems)">Isolation</a>, and <a href="Durability_(database_systems)" title="Durability (database systems)">Durability</a> (ACID) in transactions. The submission records are stored in the submission <a href="Log_file" class="mw-redirect" title="Log file">log</a> for recovery and consistency in case of failure. In terms of transactions, the opposite of committing is giving up tentative changes to the transaction, which is rolled back.
</p><p>Due to the rise of <a href="Distributed_computing" title="Distributed computing">distributed computing</a> and the need to ensure <a href="Data_consistency" title="Data consistency">data consistency</a> across multiple systems, commit protocols have been evolving since their emergence in the 1970s. The main developments include the <a href="Two-phase_commit_protocol" title="Two-phase commit protocol">Two-Phase Commit</a> (2PC) first proposed by <a href="Jim_Gray_(computer_scientist)" title="Jim Gray (computer scientist)">Jim Gray</a>, which is the fundamental core of distributed transaction management. Subsequently, the <a href="Three-phase_commit_protocol" title="Three-phase commit protocol">Three-phase Commit</a> (3PC), Hypothesis Commit (PC), Hypothesis Abort (PA), and Optimistic Commit protocols gradually emerged, solving the problems of blocking and <a href="Fault_recovery" class="mw-redirect" title="Fault recovery">fault recovery</a>.
</p><p>Today, new fields such as <a href="E-commerce" title="E-commerce">e-commerce</a> payment and <a href="Blockchain" title="Blockchain">blockchain</a> technology are emerging, and submission protocols play a significant role in various business areas. By effectively handling transactions, resolving faults and recovering problems, the commit protocol becomes crucial in ensuring the <a href="Reliability_(computer_networking)" title="Reliability (computer networking)">reliability</a> and consistency of data management.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>

<p>The concept of Commit originated in the late 1960s and early 1970s, when computer technology was rapidly advancing and data management was becoming an important requirement in business and finance. Enterprises have gradually replaced the traditional paper records with computers, which has fully improved the work efficiency. The reliability and consistency of data have become a necessary requirement. <a href="Transaction_management" class="mw-redirect" title="Transaction management">Transaction management</a> at this stage is relatively simple, limited to using a single computer for processing. It merely effectively records the changes in data to ensure that the data remains stable after the transaction is completed or terminated. In the late 1970s, as database systems moved from a single calculator operation to multiple distributed collaborations, ensuring data consistency and reliability became a new challenge. In 1978, computer scientist Jim Gray proposed the famous two-phase Commit Protocol (2PC), which became an effective solution for distributed transaction management, successfully managing data synchronization problems between multiple nodes.<sup id="cite_ref-:0_1-0" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> However, this commit protocol has some potential transaction blocking problems when nodes fail.
</p><p>In the early 1980s, researchers discovered that although the two-step commit protocol was effective at synchronizing data, there could be long waits and even system crashes, with limitations. To improve this problem, people have begun to explore new and effective methods, including enhancing efficiency by reducing message communication during the protocol process. IBM's R* database introduced the Assumed Commit and Assumed abort protocols, which contributed significantly to transaction management efficiency.<sup id="cite_ref-:1_2-0" class="reference"><a href="#cite_note-:1-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> These two protocols have greatly improved the processing efficiency of distributed transactions by reducing <a href="Communication" title="Communication">communication</a> overhead and have become an important breakthrough in the technology of transaction commit protocols.
</p><p>By the early 1990s, with the increase in business demands and the complexity of transactions, enterprises required higher efficiency in distributed transaction processing. In order to adapt to the needs of different environments, the scientific community has gradually developed various variants of commit protocols to provide more flexible transaction management options for different needs.<sup id="cite_ref-:2_3-0" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> For example, the three-phase commit protocol promotes the commit of transactions more effectively and reduces the occurrence of blocking problems by adding a pre-commit protocol and a timeout mechanism.
</p><p>In the 21st century, with the popularization of mobile Internet and wireless technology, the commit protocol has been further developed, and researchers have begun to pay attention to how to reduce the blocking in the transaction process to solve the problem of broadband limitation, battery life and network instability in the mobile environment. The proposal of optimistic commit protocol marks the extension of commit technology from traditional database to the emerging mobile data field.<sup id="cite_ref-:3_4-0" class="reference"><a href="#cite_note-:3-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> This protocol allows transactions to temporarily use unconfirmed data, improving the user experience in cases of poor network conditions.
</p><p>In recent years, with the rise of blockchain and decentralized technologies, submission protocols and consensus mechanisms have gradually merged.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> These consensus algorithms play a role in tamper-proofing and preventing malicious attacks on node pairs in a decentralized environment. This enables commit to no longer be confined to the scope of traditional database management, but to become the core technology of trust computing and distributed ledgers, further expanding the application field of commit in the <a href="Digital_age" class="mw-redirect" title="Digital age">digital age</a>. This integration has brought about extensive application impacts. Each transaction can achieve the effect of tracking global submissions through the verification of the consensus mechanism, becoming an important technical foundation for promoting the circulation of digital assets, the operation of cryptocurrencies and decentralized applications.
</p>
<div class="mw-heading mw-heading2"><h2 id="Commit_Protocol_Types">Commit Protocol Types</h2></div>
<p>In the world of data management, a transaction is a series of database operations, such as <a href="Bank_transfer" class="mw-redirect" title="Bank transfer">bank transfers</a> and order submission. In order to ensure the accuracy, consistency, and security of the data, transactions are usually completed completely, or cancelled completely, leaving no partially completed results.<sup id="cite_ref-:4_6-0" class="reference"><a href="#cite_note-:4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Commit protocol is the method used to coordinate this process. Different protocols are applicable to different submission scenarios and have their own advantages and disadvantages. There are four major commit protocols.
</p>

<div class="mw-heading mw-heading3"><h3 id="Two-Phase_Commit_(2PC)">Two-Phase Commit (2PC)</h3></div>
<p>The two-phase commit protocol is the most classic and broadest approach to distributed transactions, which includes both a preparation phase and a commit phase.<sup id="cite_ref-:0_1-1" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> This commit protocol is designed to allow the database coordinator to determine if all participating nodes agree. The preparation phase is the phase in which the coordination node sends a ready to commit request to all nodes participating in the transaction. The commit phase is a global commit after all participating nodes are ready, and if no agreement is reached, all nodes <a href="Rollback_(data_management)" title="Rollback (data management)">roll back</a> the transaction and undo all previous operations.
</p><p>Although the two-phase commit protocol is the easiest to operate and widely used, its obvious drawback is that it can cause transactions to be blocked for a long time when nodes fail, resulting in a decline in system performance and making it difficult to terminate or continue immediately.
</p>

<div class="mw-heading mw-heading3"><h3 id="Three-Phase_Commit_(3PC)">Three-Phase Commit (3PC)</h3></div>
<p>The three-phase commit protocol is an improved non-blocking protocol based on 2PC, which is divided into three stages: preparation, pre-commit and commit. Firstly, each node sends a "preparation" request. After confirmation, a "pre-submission" stage is added. At this point, each node has completed most of the preparatory work and is waiting for the final confirmation. Finally, in the formal commit stage, after all nodes send the "commit" request, the transaction is completed and committed. Compared with 2PC, it increases the timeout mechanism, avoids the <a href="Blocking_(computing)" title="Blocking (computing)">blocking</a> problem caused by single point of failure, and improves the reliability of the system.<sup id="cite_ref-:2_3-1" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p><p>The three-phase commit protocol significantly optimizes transaction reliability, but adds additional <a href="Overhead_(computing)" title="Overhead (computing)">overhead</a> for message transmission and state maintenance. It is more suitable for distributed application scenarios with high transaction sensitivity and no acceptance of long waiting times.
</p>
<div class="mw-heading mw-heading3"><h3 id="Presumed_Commit_(PC)_and_Presumed_Abort_(PA)">Presumed Commit (PC) and Presumed Abort (PA)</h3></div>
<p>Presumed Commit (PC) is the default that the transaction will be committed successfully and rollback will be notified unless an anomaly is encountered. This commit reduces the message overhead and logging costs of a normal commits. Presumed Abort (PA) is assumed that the <a href="Default_state_network" class="mw-redirect" title="Default state network">default state</a> of the transaction is a rollback and will only be committed when all nodes have explicitly agreed.<sup id="cite_ref-:1_2-1" class="reference"><a href="#cite_note-:1-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> This commit is applicable to transactions that are not updated frequently or have a low probability of successful commit. The IBM R* Distributed Database management System was the first to propose and practice the PC and PA protocols, handling distributed transaction management very efficiently and becoming a classic case in the field of database transaction management.<sup id="cite_ref-:1_2-2" class="reference"><a href="#cite_note-:1-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Optimistic_Commit_Protocol">Optimistic Commit Protocol</h3></div>
<p>With the rise of the Internet, the previous commit protocols are facing new challenges, especially in mobile scenarios with unstable networks. Excessively long transaction waiting times can affect the user experience. The Optimistic Commit Protocol allows a transaction to temporarily access uncommitted data before committing to avoid wait times.<sup id="cite_ref-:5_7-0" class="reference"><a href="#cite_note-:5-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> This type of commit is suitable for high-contention environments, but if a transaction fails, additional compensatory transactions need to be executed to achieve semantic atomicity to ensure final data consistency.<sup id="cite_ref-:4_6-1" class="reference"><a href="#cite_note-:4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Once the compensation thing detects a transaction failure, it will promptly execute another special transaction and undo the previous temporary operation to restore the data to the consistent state before the transaction. The optimistic commit protocol developed by Levy et al. (1991) uses compensation transactions to solve the problem of indefinite waiting that traditional two-phase commit protocols may face, and improves the system performance.
</p>
<div class="mw-heading mw-heading2"><h2 id="Failures_and_Recovery_in_Commit_Protocols">Failures and Recovery in Commit Protocols</h2></div>
<p>Commit protocol is mainly used to ensure the consistency and integrity of data during transaction processing. However, in actual operation, node failure or abnormal shutdown is inevitable, which may cause data confusion and loss. Common failures include network outages, server failures or transaction operation conflicts.<sup id="cite_ref-:0_1-2" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> The following mechanisms can help the Commit protocol effectively deal with anomalies, maintain data consistency, and ensure that the transaction submission can be completed efficiently.
</p>
<div class="mw-heading mw-heading3"><h3 id="Logging_and_Recovery">Logging and Recovery</h3></div>
<p>Logging is one of the important means of fault recovery. Each participating database node records every step of a transaction in real time, including transaction initiation, data update, commit, or transaction termination. These <a href="Record_(computer_science)" title="Record (computer science)">records</a> are called logs. When the system malfunctions or terminates abnormally, the data will become inconsistent and chaotic. At this time, logs play an important role. In this case, the database system can quickly recover to the consistent state before the fault by reading the logs recorded before the fault. This recovery method is divided into redo and undo. To make sure the updated material is saved correctly, the system uses a technique known as "redo" to re-execute the transaction steps that were documented in the log after a transaction has been verified as committed.<sup id="cite_ref-:1_2-3" class="reference"><a href="#cite_note-:1-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> The system uses a feature known as "undo" to make sure that all actions have been completely rolled back in the event that a transaction commit mistake occurs.<sup id="cite_ref-:1_2-4" class="reference"><a href="#cite_note-:1-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Log recording is widely used in various mainstream database systems, including IBM's R* database, effectively ensuring the reliability of data.
</p>
<div class="mw-heading mw-heading3"><h3 id="Compensating_Transactions">Compensating Transactions</h3></div>
<p>In the Optimistic Commit Protocol, a transaction may use data before it is committed, which improves efficiency, but only if it is committed successfully. When a transaction eventually fails or aborts, the data that has been modified may be inconsistent. Therefore, the concept of compensating transactions is introduced.<sup id="cite_ref-:5_7-1" class="reference"><a href="#cite_note-:5-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>The meaning of a compensated transaction is that when a transaction fails or terminates, the system does not cancel the transaction, but executes a special transaction to compensate or undo the operation done by the previous transaction, so that the data is restored consistently. For example, in e-commerce, if the original transaction is to create an order and deduct inventory, when this transaction fails, the compensation transaction will cancel the order and restore the inventory. Compensation transactions have independence and <a href="Persistence_(computer_science)" title="Persistence (computer science)">persistence</a>, that is, they can be executed without relying on the original transaction and still maintain the final successful execution when the system crashes. This method effectively avoids the Cascading Aborts problem that may occur due to traditional transaction revocation. It is applicable to scenarios where instability frequently occurs in mobile networks and ensures the performance and stability of transaction processing.
</p>
<div class="mw-heading mw-heading3"><h3 id="Timeout_Mechanism">Timeout Mechanism</h3></div>
<p>Commit protocols typically wait for confirmation from multiple nodes. If one of the nodes fails or the network fails, the entire transaction can stop for a long time, seriously affecting efficiency, a situation known as a blocking problem.
</p><p>The timeout mechanism provides a solution to the blocking problem. A maximum timeout threshold will be set in this mechanism. When the transaction waiting time exceeds the preset time, the system automatically determines that the transaction fails, rolls back the transaction, and releases the occupied data resources, effectively preventing the entire system waiting time from being too long. The time-out mechanism is typically used by the three-phase Commit protocol (3PC), which effectively reduces the problem of long waiting time and blocking in distributed transactions and avoids the phenomenon of system resources being occupied for a long time.<sup id="cite_ref-:2_3-2" class="reference"><a href="#cite_note-:2-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> The timeout mechanism is usually carried out in combination with the status inquiry mechanism to detect whether the node is still active, increasing the fault tolerance of the system.
</p>
<div class="mw-heading mw-heading2"><h2 id="Applications_of_Commit_Protocols">Applications of Commit Protocols</h2></div>
<p>Commit protocols are widely used in all areas of life and business. Although most users do not have direct contact with these technologies, they effectively ensure the accuracy and consistency of user data. Financial transaction payments, e-commerce transactions, flight and <a href="Hotel_reservation_system" class="mw-redirect" title="Hotel reservation system">hotel reservations</a>, blockchain and currency transactions are some typical <a href="Application_software" title="Application software">application</a> scenarios of submission protocols.
</p>
<div class="mw-heading mw-heading3"><h3 id="Banking_and_Financial_Transactions">Banking and Financial Transactions</h3></div>
<p>Transactions processed by the banking system typically need to generate money flows between multiple accounts, and each transaction must be very accurate, especially in cross-regional transfer and payment businesses. Any error in data or nodes will lead to a loss of funds. For example, when you transfer money to a friend via <a href="Mobile_banking" title="Mobile banking">mobile banking</a>, the bank's processing system is actually operating on multiple database servers at the same time to complete the transaction.
</p><p>The commit protocol ensures that each <a href="Bank_transfer" class="mw-redirect" title="Bank transfer">bank transfer</a> will only be a complete success and a complete non-execution of the transfer. This mechanism maintains the rigor of banking operations and prevents the loss of funds or account data. The classic Two-phase Commit Protocol (2PC) is typically used in banking systems around the world and is recognized as a standard solution by banks and <a href="Financial_system" title="Financial system">financial systems</a> to ensure the accuracy and reliability of transactions, especially in cross-border transfer transactions.<sup id="cite_ref-:0_1-3" class="reference"><a href="#cite_note-:0-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Through this agreement, the bank can avoid differences in the <a href="Balance_of_payments" title="Balance of payments">balance</a> of users' accounts and significantly reduce the risk of customers' property loss.
</p>
<div class="mw-heading mw-heading3"><h3 id="E-commerce_and_Mobile_Applications">E-commerce and Mobile Applications</h3></div>
<p>With the rapid development of mobile Internet, commit protocols are widely used in <a href="Online_shopping" title="Online shopping">online shopping</a> and mobile payment scenarios. For example, when a user places an order to pay on the platform, the backend system needs to use a commit protocol to ensure that order information, inventory data, and payment amounts are always consistent and accurate.
</p><p>However, <a href="Electronic_devices" class="mw-redirect" title="Electronic devices">electronic devices</a> often encounter network disconnections or instability, and optimistic commit protocols are widely used in this context. This protocol allows transactions to use short-term data first and then compensate for the changes made before the transaction is rolled back after verification fails. This method enables things to be successfully submitted even under poor network conditions, effectively reducing waiting time, ensuring the smooth progress of transactions, and significantly improving user experience and satisfaction.<sup id="cite_ref-:3_4-1" class="reference"><a href="#cite_note-:3-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Airline_and_Hotel_Reservations">Airline and Hotel Reservations</h3></div>
<p>Airlines and hotels need to ensure that the inventory data on multiple <a href="Client%E2%80%93server_model" title="Client–server model">servers</a> remains consistent when handling <a href="Computer_reservation_system" title="Computer reservation system">reservations</a>. Once the data is not synchronized in <a href="Real-time_computing" title="Real-time computing">real time</a>, problems such as <a href="Overselling" title="Overselling">overselling</a> and duplicate reservations will occur. For example, when passengers book flights, the system must ensure that the number of remaining seats is updated in real time on all platforms.
</p><p>The thing submission protocol avoids the overselling problem caused by data desynchronization by simultaneously controlling the data information on multiple servers. IBM 's R* database management system uses the Presumed Commit protocol to handle such booking services efficiently, ensuring the accuracy and efficiency of customer booking.<sup id="cite_ref-:1_2-5" class="reference"><a href="#cite_note-:1-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Blockchain_and_Cryptocurrencies">Blockchain and Cryptocurrencies</h3></div>
<p>In recent years, the rise of blockchain technology has made the commit protocol have a new application scenario. Blockchain is essentially a decentralized data management system that allows transactions and data updates to achieve data consistency through consensus among multiple decentralized nodes.
</p><p>Commit protocol, combined with the Consensus Mechanism in the blockchain, provides the necessary <a href="Data_security" title="Data security">data security</a> for decentralized applications such as <a href="Cryptocurrency" title="Cryptocurrency">cryptocurrency</a> transactions and <a href="Smart_contract" title="Smart contract">Smart Contracts</a>.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> In addition, this combination ensures that the results of transaction execution in the blockchain network are consistent across all nodes, thus becoming an essential <a href="Infrastructure_as_code" title="Infrastructure as code">infrastructure</a> for the <a href="Digital_economy" title="Digital economy">digital economy</a>.<sup id="cite_ref-:4_6-2" class="reference"><a href="#cite_note-:4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> For example, the special commit protocol adopted by the <a href="Hyperledger" title="Hyperledger">Hyperledger Fabric</a> platform directly emphyses the consensus mechanism into the transaction verification process to enhance the robustness against malicious nodes and network partitions.<sup id="cite_ref-:4_6-3" class="reference"><a href="#cite_note-:4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Atomic_commit" title="Atomic commit">Atomic commit</a></li>
<li><a href="Two-phase_commit_protocol" title="Two-phase commit protocol">Two-phase commit protocol</a></li>
<li><a href="Three-phase_commit_protocol" title="Three-phase commit protocol">Three-phase commit protocol</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-:0-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-:0_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:0_1-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:0_1-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-:0_1-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite class="citation cs2"><span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="http://www.springerreference.com/index/doi/10.1007/springerreference_65982">"Transaction Management in Distributed Database Systems"</a></span>, <i>SpringerReference</i>, Berlin/Heidelberg: Springer-Verlag, 2011, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2Fspringerreference_65982">10.1007/springerreference_65982</a> (inactive 1 July 2025)<span class="reference-accessdate">, retrieved <span class="nowrap">2025-05-29</span></span></cite><span class="cs1-maint citation-comment"><code class="cs1-code">{{citation}}</code>: CS1 maint: DOI inactive as of July 2025 (link)</span></span>
</li>
<li id="cite_note-:1-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-:1_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:1_2-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:1_2-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-:1_2-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-:1_2-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-:1_2-5"><sup><i><b>f</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFMohanLindsayObermarck1986" class="citation journal cs1">Mohan, C.; Lindsay, B.; Obermarck, R. (December 1986). <a rel="nofollow" class="external text" href="https://doi.org/10.1145/7239.7266">"Transaction management in the R* distributed database management system"</a>. <i>ACM Transactions on Database Systems</i>. <b>11</b> (4): <span class="nowrap">378–</span>396. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F7239.7266">10.1145/7239.7266</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0362-5915">0362-5915</a>.</cite></span>
</li>
<li id="cite_note-:2-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-:2_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:2_3-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:2_3-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFGuptaHaritsaRamamritham1997" class="citation book cs1">Gupta, Ramesh; Haritsa, Jayant; Ramamritham, Krithi (1997). <a rel="nofollow" class="external text" href="https://doi.org/10.1145/253260.253366">"Revisiting commit processing in distributed database systems"</a>. <i>Proceedings of the 1997 ACM SIGMOD international conference on Management of data - SIGMOD '97</i>. New York, New York, USA: ACM Press. pp.&nbsp;<span class="nowrap">486–</span>497. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F253260.253366">10.1145/253260.253366</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-89791-911-4</bdi>.</cite></span>
</li>
<li id="cite_note-:3-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-:3_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:3_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFAbdul_MoizRajamaniN.Pal2010" class="citation journal cs1">Abdul Moiz, Salman; Rajamani, Lakshmi; N.Pal, Supriya (2010-08-31). <a rel="nofollow" class="external text" href="https://doi.org/10.5121/ijdms.2010.2310">"Commit Protocols in Mobile Environments: Design &amp; Implementation"</a>. <i>International Journal of Database Management Systems</i>. <b>2</b> (3): <span class="nowrap">116–</span>126. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.5121%2Fijdms.2010.2310">10.5121/ijdms.2010.2310</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0975-5985">0975-5985</a>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFVeijalainenWolski1992" class="citation book cs1">Veijalainen, J.; Wolski, A. (1992). <a rel="nofollow" class="external text" href="https://doi.org/10.1109/icde.1992.213162">"Prepare and commit certification for decentralized transaction management in rigorous heterogeneous multidatabases"</a>. <i>[1992] Eighth International Conference on Data Engineering</i>. IEEE Comput. Soc. Press. pp.&nbsp;<span class="nowrap">470–</span>479. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2Ficde.1992.213162">10.1109/icde.1992.213162</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-8186-2545-7</bdi>.</cite></span>
</li>
<li id="cite_note-:4-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-:4_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:4_6-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:4_6-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-:4_6-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFGuptaHaritsaRamamritham1997" class="citation journal cs1">Gupta, Ramesh; Haritsa, Jayant; Ramamritham, Krithi (June 1997). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://doi.org/10.1145/253262.253366">"Revisiting commit processing in distributed database systems"</a></span>. <i>ACM SIGMOD Record</i>. <b>26</b> (2): <span class="nowrap">486–</span>497. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F253262.253366">10.1145/253262.253366</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0163-5808">0163-5808</a>.</cite></span>
</li>
<li id="cite_note-:5-7"><span class="mw-cite-backlink">^ <a href="#cite_ref-:5_7-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:5_7-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFLevyKorthSilberschatz1991" class="citation journal cs1">Levy, Eliezer; Korth, Henry F.; Silberschatz, Abraham (April 1991). <a rel="nofollow" class="external text" href="https://doi.org/10.1145/119995.115800">"An optimistic commit protocol for distributed transaction management"</a>. <i>ACM SIGMOD Record</i>. <b>20</b> (2): <span class="nowrap">88–</span>97. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F119995.115800">10.1145/119995.115800</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0163-5808">0163-5808</a>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFNawabSadoghi2023" class="citation journal cs1">Nawab, Faisal; Sadoghi, Mohammad (2023). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="https://doi.org/10.1561/1900000075">"Consensus in Data Management: From Distributed Commit to Blockchain"</a></span>. <i>Foundations and Trends in Databases</i>. <b>12</b> (4): <span class="nowrap">221–</span>364. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1561%2F1900000075">10.1561/1900000075</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1931-7883">1931-7883</a>.</cite></span>
</li>
</ol></div></div>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Database_management_systems327" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="Database_management_systems327" style="font-size:114%;margin:0 4em"><a href="Database" title="Database">Database management systems</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Types</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Object_database" title="Object database">Object-oriented</a>
<ul><li><a href="Comparison_of_object_database_management_systems" title="Comparison of object database management systems">comparison</a></li></ul></li>
<li><a href="Relational_database" title="Relational database">Relational</a>
<ul><li><a href="List_of_relational_database_management_systems" title="List of relational database management systems">list</a></li>
<li><a href="Comparison_of_relational_database_management_systems" title="Comparison of relational database management systems">comparison</a></li></ul></li>
<li><a href="Key%E2%80%93value_database" title="Key–value database">Key–value</a></li>
<li><a href="Column-oriented_DBMS" class="mw-redirect" title="Column-oriented DBMS">Column-oriented</a>
<ul><li><a href="List_of_column-oriented_DBMSes" title="List of column-oriented DBMSes">list</a></li></ul></li>
<li><a href="Document-oriented_database" title="Document-oriented database">Document-oriented</a></li>
<li><a href="Wide-column_store" title="Wide-column store">Wide-column store</a></li>
<li><a href="Graph_database" title="Graph database">Graph</a></li>
<li><a href="NoSQL" title="NoSQL">NoSQL</a></li>
<li><a href="NewSQL" title="NewSQL">NewSQL</a></li>
<li><a href="In-memory_database" title="In-memory database">In-memory</a>
<ul><li><a href="List_of_in-memory_databases" title="List of in-memory databases">list</a></li></ul></li>
<li><a href="Multi-model_database" title="Multi-model database">Multi-model</a>
<ul><li><a href="Comparison_of_multi-model_databases" title="Comparison of multi-model databases">comparison</a></li></ul></li>
<li><a href="Cloud_database" title="Cloud database">Cloud</a></li>
<li><a href="Blockchain-based_database" title="Blockchain-based database">Blockchain-based database</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Concepts</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Database" title="Database">Database</a></li>
<li><a href="ACID" title="ACID">ACID</a></li>
<li><a href="Armstrong's_axioms" title="Armstrong's axioms">Armstrong's axioms</a></li>
<li><a href="Codd's_12_rules" title="Codd's 12 rules">Codd's 12 rules</a></li>
<li><a href="CAP_theorem" title="CAP theorem">CAP theorem</a></li>
<li><a href="Create%2C_read%2C_update_and_delete" title="Create, read, update and delete">CRUD</a></li>
<li><a href="Null_(SQL)" title="Null (SQL)">Null</a></li>
<li><a href="Candidate_key" title="Candidate key">Candidate key</a></li>
<li><a href="Foreign_key" title="Foreign key">Foreign key</a></li>
<li><a href="PACELC_design_principle" title="PACELC design principle">PACELC design principle</a></li>
<li><a href="Superkey" title="Superkey">Superkey</a></li>
<li><a href="Surrogate_key" title="Surrogate key">Surrogate key</a></li>
<li><a href="Unique_key" title="Unique key">Unique key</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Objects</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Relation_(database)" title="Relation (database)">Relation</a>
<ul><li><a href="Table_(database)" title="Table (database)">table</a></li>
<li><a href="Column_(database)" title="Column (database)">column</a></li>
<li><a href="Row_(database)" title="Row (database)">row</a></li></ul></li>
<li><a href="View_(SQL)" title="View (SQL)">View</a></li>
<li><a href="Database_transaction" title="Database transaction">Transaction</a></li>
<li><a href="Transaction_log" title="Transaction log">Transaction log</a></li>
<li><a href="Database_trigger" title="Database trigger">Trigger</a></li>
<li><a href="Database_index" title="Database index">Index</a></li>
<li><a href="Stored_procedure" title="Stored procedure">Stored procedure</a></li>
<li><a href="Cursor_(databases)" title="Cursor (databases)">Cursor</a></li>
<li><a href="Partition_(database)" title="Partition (database)">Partition</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Components</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Concurrency_control" title="Concurrency control">Concurrency control</a></li>
<li><a href="Data_dictionary" title="Data dictionary">Data dictionary</a></li>
<li><a href="Java_Database_Connectivity" title="Java Database Connectivity">JDBC</a></li>
<li><a href="XQuery_API_for_Java" title="XQuery API for Java">XQJ</a></li>
<li><a href="Open_Database_Connectivity" title="Open Database Connectivity">ODBC</a></li>
<li><a href="Query_language" title="Query language">Query language</a></li>
<li><a href="Query_optimization" title="Query optimization">Query optimizer</a></li>
<li><a href="Query_Rewriting" class="mw-redirect" title="Query Rewriting">Query rewriting system</a></li>
<li><a href="Query_plan" title="Query plan">Query plan</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Functions</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Database_administration" title="Database administration">Administration</a></li>
<li><a href="Query_optimization" title="Query optimization">Query optimization</a></li>
<li><a href="Replication_(computing)#DATABASE" title="Replication (computing)">Replication</a></li>
<li><a href="Shard_(database_architecture)" title="Shard (database architecture)">Sharding</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related topics</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Database_model" title="Database model">Database models</a></li>
<li><a href="Database_normalization" title="Database normalization">Database normalization</a></li>
<li>Database storage</li>
<li><a href="Distributed_database" title="Distributed database">Distributed database</a></li>
<li><a href="Federated_database_system" title="Federated database system">Federated database system</a></li>
<li><a href="Referential_integrity" title="Referential integrity">Referential integrity</a></li>
<li><a href="Relational_algebra" title="Relational algebra">Relational algebra</a></li>
<li><a href="Relational_calculus" title="Relational calculus">Relational calculus</a></li>
<li><a href="Relational_model" title="Relational model">Relational model</a></li>
<li><a href="Object%E2%80%93relational_database" title="Object–relational database">Object–relational database</a></li>
<li><a href="Transaction_processing" title="Transaction processing">Transaction processing</a></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> Category</li>
<li><span class="noviewer" typeof="mw:File"><span title="Outline"></span></span> <a href="Outline_of_databases" title="Outline of databases">Outline</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-11" href="https://en.wikipedia.org/wiki/?title=Commit_(data_management)&amp;oldid=1300033285">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>